import {
  validateNum,
  validateNumAndZero,
  validateIdNo,
  validateNo,
  validateTextLang,
  validateTextLangMinMax,
  validateNumZZS,
  validateNumZXS,
  validateContact,
  validateIdCard,
  validateNumOne,
  validateNumTwo,
  validateNumThree,
  validatePhone,
  validatePwd,
  validateNumZZSAndZero,
  validateNumZSAndZero,
  validateNumber,
} from "@/utils/validate";

//校验id
export function validateIdFunc(rule, value, callback) {
  if (!value || !validateIdNo(value)) {
    callback(new Error(this.$t('common.dataType.newNo')));
  } else {
    callback();
  }
}

//校验数字
export function validateNumFunc(rule, value, callback) {
  if (!value || !validateNum(value)) {
    callback(new Error(this.$t('common.dataType.num2')));
  } else {
    callback();
  }
}

//校验数字 可为空
export function validateNumFuncCanNull(rule, value, callback) {
  if (value && !validateNumAndZero(value)) {
    callback(new Error('请输入大于等于0的数字'));
  } else {
    callback();
  }
}

// 大于等于0的数字
export function validateNumFuncNotNull(value) {
  if ((!value && value != 0) || !validateNumZSAndZero(value)) {
    return false;
  } else {
    return true;
  }
}

// 大于等于0的数字 可为空
export function validateNumAndZeroCanNull(value) {
  if (value && !validateNumZSAndZero(value)) {
    return false;
  } else {
    return true;
  }
}

// 大于等于0的正数 可空
export function validateNumberZSAndZero(rule, value, callback) {
  if ((value && value != 0) && !validateNumZSAndZero(value)) {
    callback(new Error('请输入大于等于0的正数,最多保留一位小数'));
  } else {
    callback();
  }
}

//校验2-40位字符
export function validateTextLength(rule, value, callback) {
  if (!value || !validateTextLang(value)) {
    callback(new Error('请输入2-40位字符'));
  } else {
    callback();
  }
}

//校验2-40位字符 可空
export function validateTextLengthAndNull(rule, value, callback) {
  if (!value) {
    callback();
  }
  if (value && !validateTextLang(value)) {
    callback(new Error('请输入2-40位字符'));
  } else {
    callback();
  }
}

//校验自定义长度
export function validateTextLengthMinMax(rule, value, callback) {
  var min = rule.min;
  var max = rule.max;
  if (!value || !validateTextLangMinMax(value, rule.min, rule.max)) {
    callback(new Error('请输入' + min + '-' + max + '位字符'));
  } else {
    callback();
  }
}

//校验自定义长度 可空
export function validateTextLengthMinMaxOrNull(rule, value, callback) {
  var min = rule.min;
  var max = rule.max;
  if (value && !validateTextLangMinMax(value, rule.min, rule.max)) {
    callback(new Error('请输入' + min + '-' + max + '位字符'));
  } else {
    callback();
  }
}
//校验>0
export function validateArea(rule, value, callback) {
  if (!value || value <= 0) {
    callback(new Error('必须大于0'));
  } else {
    callback();
  }
}

// 联系方式
export function validateContactNum(rule, value, callback) {
  if (!validateContact(value)) {
    callback(new Error('请输入正确的联系方式'));
  } else {
    callback();
  }
}

// 联系方式 可空
export function validateContactNumAndNull(value) {
  if (!value) {
    return true
  }
  if (!validateContact(value)) {
    return false
  } else {
    return true
  }
}

// 身份证
export function validateIdCardFunc(rule, value, callback) {
  if (!validateIdCard(value)) {
    callback(new Error('请输入正确的身份证'));
  } else {
    callback();
  }
}

// 身份证可空
export function validateIdCardFuncAndNull(rule, value, callback) {
  if (!value) {
    callback();
  }
  if (!validateIdCard(value)) {
    callback(new Error('请输入正确的身份证'));
  } else {
    callback();
  }
}

//正整数
export function validateNumberZZS(rule, value, callback) {
  if (!validateNumZZS(value)) {
    callback(new Error('请输入正整数'));
  } else {
    callback();
  }
}
//正整数-可以不填
export function validateNumberZZSCanNull(rule, value, callback) {
  if (value && !validateNumZZS(value)) {
    callback(new Error('请输入正整数'));
  } else {
    callback();
  }
}
//正整数和0
export function validateNumberZZSAndZero(rule, value, callback) {
  if (!validateNumZZSAndZero(value)) {
    callback(new Error('请输入大于等于0的正整数'));
  } else {
    callback();
  }
}
//正小数
export function validateNumberZXS(rule, value, callback) {
  if (!validateNumZXS(value)) {
    callback(new Error('请输入大于0的数字'));
  } else {
    callback();
  }
}
//正小数 可以不填
export function validateNumberZXSCanNull(rule, value, callback) {
  if (!value) {
    callback();
  }
  if (value && !validateNumZXS(value)) {
    callback(new Error('请输入大于0的数字'));
  } else if (value === '0') {
    callback(new Error('请输入大于0的数字'));
  } else {
    callback();
  }
}

//大于等于0小于等于100的数
export function validateNumberFunc(value) {
  if (!value || validateNumZSAndZero(value) && Number(value) >= 0 && Number(value) <= 100) {
    return true;
  } else {
    return false;
  }
}

//大于等于0小于等于1的数
export function validateNumberAndZeroFunc(value) {
  if (!value || validateNumZSAndZero(value) && Number(value) >= 0 && Number(value) <= 1) {
    return true;
  } else {
    return false;
  }
}

//正小数 1位
export function validateNumOneFunc(rule, value, callback) {
  if (!validateNumOne(value)) {
    callback(new Error('请输入大于0的数字，最多保留1位小数'));
  } else {
    callback();
  }
}

//正小数 1位  可为空
export function validateNumOneFuncCanNull(rule, value, callback) {
  if (value && !validateNumOne(value)) {
    callback(new Error('请输入大于0的数字，最多保留1位小数'));
  } else {
    callback();
  }
}

//正小数 1/2位
export function validateNumTwoFunc(rule, value, callback) {
  if (!validateNumTwo(value)) {
    callback(new Error('请输入大于0的数字，最多保留2位小数'));
  } else {
    callback();
  }
}
//正小数 1/2位 可为空
export function validateNumTwoFuncCanNull(rule, value, callback) {
  if (value && !validateNumTwo(value)) {
    callback(new Error('请输入大于0的数字，最多保留2位小数'));
  } else {
    callback();
  }
}

export function validateWNFunc(rule, value, callback) {
  if (!value || !validateNo(value)) {
    callback(new Error(this.$t('common.dataType.no')));
  } else {
    callback();
  }
}

/*
 * 校验sim卡
 * */
export function validateSim(type) {
  return (rule, value, callback) => {
    const simNo = [this.form.data.sim1No, this.form.data.sim2No][type];
    if (!value || !validateIdNo(value)) {
      callback(new Error(this.$t('common.dataType.newNo')));
    } else if (value === simNo) {
      callback(new Error(this.$t('common.dataType.simNotice')));
    } else {
      callback();
    }
  };
}

/*
 * 校验手机号
 * */
export function validatePhoneFunc(rule, value, callback) {
  if (!value || !validatePhone(value)) {
    callback(new Error(this.$t('common.dataType.phone')));
  } else {
    callback();
  }
}

/*
 * 校验整数和两位以内的小数
 * */
export function validateNumThreeFunc(rule, value, callback) {
  if (!value || !validateNumThree(value)) {
    callback(new Error("整数或两位以内的小数"));
  } else {
    callback();
  }
}

// ph值 两位小数
export function validateNumberTwoPh(rule, value, callback) {
  if (value) {
    if (!validateNumTwo(value) || value < 0 || value > 14) {
      callback(new Error('请输入0-14的数字，最多保留2位小数'));
    } else {
      callback();
    }
  } else {
    callback();
  }
}

// 密码
export function validatePassWord(rule, value, callback) {
  if (!validatePwd(value)) {
    callback(new Error('8位以上字符，由大小写英文字母、数字、符号共同组成'));
  } else {
    callback();
  }
}